package benzapp.overlay;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.view.MotionEvent;
import benzapp.pack.BenzAppActivity;
import benzapp.pack.R;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;

/** 
 * Overlay della posizione corrente
 * @author Valentino Briani
 */
public class PosizioneOverlay extends Overlay {
	
	private BenzAppActivity activity;
	private GeoPoint posizione;
	
	public PosizioneOverlay(BenzAppActivity activity, GeoPoint posizione) {
		super();
		this.activity = activity;
		this.posizione = posizione;
	}
	
	@Override
	/**
	 * Funzione che disegna il marker per la posizione corrente
	 * @author Michele Segata
	 */
	public void draw(Canvas canvas, MapView mapView, boolean shadow) {
		super.draw(canvas, mapView, shadow);
		//prendo la proiezione della posizione sulla mappa
		Point screenPts = mapView.getProjection().toPixels(posizione, null);
		//prendo risorsa del marker da usare nella posizione corrente
		Bitmap icon = BitmapFactory.decodeResource(activity.getApplicationContext().getResources(), R.drawable.current_position_marker);
		//disegno il marker sulla mappa
		canvas.drawBitmap(icon, screenPts.x-(icon.getWidth()/2), screenPts.y-(icon.getHeight()/2), null);
	}
	
	@Override
	/**
	 * Funzione che chiama l'aggiornamento dell'indirizzo quando l'utente toglie il dito dalla mappa
	 * @author Valentino Briani
	 */
	public boolean onTouchEvent(MotionEvent e, MapView mapView) {
		if (e.getAction() == MotionEvent.ACTION_UP) {
			activity.aggiornaIndirizzo();
		}
		return false;
	}

}
